package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import ventanas.VentanaABMAgenda;
import negocio.Agenda;
import negocio.Horario;
import negocio.Medico;
import negocio.Sistema;

public class ControladorABMAgenda implements ActionListener {

	private VentanaABMAgenda v;
	private Sistema sistema;
	private Agenda a;
	private Medico m;
	List<Horario> auxDiasAtencion;
	
	public ControladorABMAgenda(VentanaABMAgenda ventanaCargarAgenda, Agenda agenda, Medico medico) {
		this.v=ventanaCargarAgenda;
		this.m=medico;
		this.a=agenda;
		this.sistema=Sistema.obtenerInstancia();
		this.auxDiasAtencion=new ArrayList<Horario>();
	}

	public void actionPerformed(ActionEvent e) {
		
		if(e.getSource()==v.getBtnCancelar()){
			v.dispose();
		}
		
		if(e.getSource()==v.getCkxEditarAgenda()){
			if (v.getCkxEditarAgenda().isSelected())
				v.setearEditabilidadChecks(true);
			else{
				v.setearEditabilidadTodos(false);
			}
		}
		
		if(e.getSource()==v.getCkxLunes()){
			
			if (v.getCkxLunes().isSelected()){
				v.gethFLunes().setEnabled(true);
				v.gethILunes().setEnabled(true);
				v.getmILunes().setEnabled(true);
				v.getmFLunes().setEnabled(true);
				v.getDuracionLunes().setEnabled(true);
			}else{
				v.gethFLunes().setEnabled(false);
				v.gethILunes().setEnabled(false);
				v.getmILunes().setEnabled(false);
				v.getmFLunes().setEnabled(false);
				v.getDuracionLunes().setEnabled(false);
			}
		}
		
		if(e.getSource()==v.getCkxMartes()){
			if (v.getCkxMartes().isSelected()){
				v.gethFMartes().setEnabled(true);
				v.gethIMartes().setEnabled(true);
				v.getmIMartes().setEnabled(true);
				v.getmFMartes().setEnabled(true);
				v.getDuracionMartes().setEnabled(true);
			}else{
				v.gethFMartes().setEnabled(false);
				v.gethIMartes().setEnabled(false);
				v.getmIMartes().setEnabled(false);
				v.getmFMartes().setEnabled(false);
				v.getDuracionMartes().setEnabled(false);
			}
		}
		
		if(e.getSource()==v.getCkxMiercoles()){
			if (v.getCkxMiercoles().isSelected()){
				v.gethFMiercoles().setEnabled(true);
				v.gethIMiercoles().setEnabled(true);
				v.getmIMiercoles().setEnabled(true);
				v.getmFMiercoles().setEnabled(true);
				v.getDuracionMiercoles().setEnabled(true);
			}else{
				v.gethFMiercoles().setEnabled(false);
				v.gethIMiercoles().setEnabled(false);
				v.getmIMiercoles().setEnabled(false);
				v.getmFMiercoles().setEnabled(false);
				v.getDuracionMiercoles().setEnabled(false);
			}
		}
				
		if(e.getSource()==v.getCkxJueves()){
			if (v.getCkxJueves().isSelected()){
				v.gethFJueves().setEnabled(true);
				v.gethIJueves().setEnabled(true);
				v.getmIJueves().setEnabled(true);
				v.getmFJueves().setEnabled(true);
				v.getDuracionJueves().setEnabled(true);
			}else{
				v.gethFJueves().setEnabled(false);
				v.gethIJueves().setEnabled(false);
				v.getmIJueves().setEnabled(false);
				v.getmFJueves().setEnabled(false);
				v.getDuracionJueves().setEnabled(false);
			}
		}
				
		if(e.getSource()==v.getCkxViernes()){
			if (v.getCkxViernes().isSelected()){
				v.gethFViernes().setEnabled(true);
				v.gethIViernes().setEnabled(true);
				v.getmIViernes().setEnabled(true);
				v.getmFViernes().setEnabled(true);
				v.getDuracionViernes().setEnabled(true);
			}else{
				v.gethFViernes().setEnabled(false);
				v.gethIViernes().setEnabled(false);
				v.getmIViernes().setEnabled(false);
				v.getmFViernes().setEnabled(false);
				v.getDuracionViernes().setEnabled(false);
			}
		}
				
		if(e.getSource()==v.getCkxSabado()){
			if (v.getCkxSabado().isSelected()){
				v.gethFSabado().setEnabled(true);
				v.gethISabado().setEnabled(true);
				v.getmISabado().setEnabled(true);
				v.getmFSabado().setEnabled(true);
				v.getDuracionSabado().setEnabled(true);
			}else{
				v.gethFSabado().setEnabled(false);
				v.gethISabado().setEnabled(false);
				v.getmISabado().setEnabled(false);
				v.getmFSabado().setEnabled(false);
				v.getDuracionSabado().setEnabled(false);
			}
		}
		
		if(e.getSource()==v.getCkxDomingo()){
			if (v.getCkxDomingo().isSelected()){	
				v.gethFDomingo().setEnabled(true);
				v.gethIDomingo().setEnabled(true);
				v.getmIDomingo().setEnabled(true);
				v.getmFDomingo().setEnabled(true);
				v.getDuracionDomingo().setEnabled(true);
			}else{
				v.gethFDomingo().setEnabled(false);
				v.gethIDomingo().setEnabled(false);
				v.getmIDomingo().setEnabled(false);
				v.getmFDomingo().setEnabled(false);
				v.getDuracionDomingo().setEnabled(false);
			}
		}
		
		if(e.getSource()==v.getBtnAceptar()){
			
				Agenda auxAgenda = null ;
				
				if (a!= null)
					auxAgenda = a;
				else
					auxAgenda = new Agenda();
				
				Horario auxHorario1 = new Horario();
				Horario auxHorario2 = new Horario();
				Horario auxHorario3 = new Horario();
				Horario auxHorario4 = new Horario();
				Horario auxHorario5 = new Horario();
				Horario auxHorario6 = new Horario();
				Horario auxHorario7 = new Horario();
				
				if (v.getCkxLunes().isSelected()){
					auxHorario2.setDia(2);
					auxHorario2.setDuracionTurno((int) v.getDuracionLunes().getValue());
					auxHorario2.setHoraInicio((int)v.gethILunes().getValue());
					auxHorario2.setHoraFin((int)v.gethFLunes().getValue());
					auxHorario2.setMinutosInicio((int)v.getmILunes().getValue());
					auxHorario2.setMinutosFin((int)v.getmFLunes().getValue());
					auxDiasAtencion.add(auxHorario2);
				}
				
				if (v.getCkxMartes().isSelected()){
					auxHorario3.setDia(3);
					auxHorario3.setDuracionTurno((int) v.getDuracionMartes().getValue());
					auxHorario3.setHoraInicio((int)v.gethIMartes().getValue());
					auxHorario3.setHoraFin((int)v.gethFMartes().getValue());
					auxHorario3.setMinutosInicio((int)v.getmIMartes().getValue());
					auxHorario3.setMinutosFin((int)v.getmFMartes().getValue());
					auxDiasAtencion.add(auxHorario3);
				}

				if (v.getCkxMiercoles().isSelected()){
					auxHorario4.setDia(4);
					auxHorario4.setDuracionTurno((int) v.getDuracionMiercoles().getValue());
					auxHorario4.setHoraInicio((int)v.gethIMiercoles().getValue());
					auxHorario4.setHoraFin((int)v.gethFMiercoles().getValue());
					auxHorario4.setMinutosInicio((int)v.getmIMiercoles().getValue());
					auxHorario4.setMinutosFin((int)v.getmFMiercoles().getValue());
					auxDiasAtencion.add(auxHorario4);
				}
				
				if (v.getCkxJueves().isSelected()){
					auxHorario5.setDia(5);
					auxHorario5.setDuracionTurno((int) v.getDuracionJueves().getValue());
					auxHorario5.setHoraInicio((int)v.gethIJueves().getValue());
					auxHorario5.setHoraFin((int)v.gethFJueves().getValue());
					auxHorario5.setMinutosInicio((int)v.getmIJueves().getValue());
					auxHorario5.setMinutosFin((int)v.getmFJueves().getValue());
					auxDiasAtencion.add(auxHorario5);
				}
				
				if (v.getCkxViernes().isSelected()){
					auxHorario6.setDia(6);
					auxHorario6.setDuracionTurno((int) v.getDuracionViernes().getValue());
					auxHorario6.setHoraInicio((int)v.gethIViernes().getValue());
					auxHorario6.setHoraFin((int)v.gethFViernes().getValue());
					auxHorario6.setMinutosInicio((int)v.getmIViernes().getValue());
					auxHorario6.setMinutosFin((int)v.getmFViernes().getValue());
					auxDiasAtencion.add(auxHorario6);
				}
				
				if (v.getCkxSabado().isSelected()){
					auxHorario7.setDia(7);
					auxHorario7.setDuracionTurno((int) v.getDuracionSabado().getValue());
					auxHorario7.setHoraInicio((int)v.gethISabado().getValue());
					auxHorario7.setHoraFin((int)v.gethFSabado().getValue());
					auxHorario7.setMinutosInicio((int)v.getmISabado().getValue());
					auxHorario7.setMinutosFin((int)v.getmFSabado().getValue());
					auxDiasAtencion.add(auxHorario7);
				}
				
				if (v.getCkxDomingo().isSelected()){
					auxHorario1.setDia(1);
					auxHorario1.setDuracionTurno((int) v.getDuracionDomingo().getValue());
					auxHorario1.setHoraInicio((int)v.gethIDomingo().getValue());
					auxHorario1.setHoraFin((int)v.gethFDomingo().getValue());
					auxHorario1.setMinutosInicio((int)v.getmIDomingo().getValue());
					auxHorario1.setMinutosFin((int)v.getmFDomingo().getValue());
					auxDiasAtencion.add(auxHorario1);
				}
				
				//Validamos si se cargo al menos un dia en la agenda
				if (auxDiasAtencion.isEmpty()){
					//ventaran de error agenda vacia;
				}else{
					//Pregunto si la agenda ya estaba creada para el medico
					if(a==null){
						auxAgenda.setDiasAtencion(auxDiasAtencion);
						auxAgenda.setMedico(m);
						sistema.guardarAgenda(auxAgenda);
					}else{
						a.setDiasAtencion(auxDiasAtencion);
						sistema.modificarAgenda(a);
					}	
				}
				v.dispose();
		}	
	}
	
	
}
